const path = require('path')
const fileUtils = require('../utils/file_utils')
const WebSocket = require('ws') //实例一个ws对象
//创建WebSocket服务端的对象  绑定的端口号为9998
const wss = new WebSocket.Server({
	port: 9998
})
//服务端监听事件开启
module.exports.listen = () => {
	//对客服端的连接事件socket进行监听
	wss.on('connection', client => {
		console.log('有客户连接成功了...')
		//对客户端的连接对象进行message事件监听
		//msg:由客户端发给服务端的数据
		client.on('message', async msg => {
			console.log('客户端发送数据给服务端了' + msg)
			let payload = JSON.parse(msg)
			const action = payload.action
			if (action === 'getData') {
				let filePath = '../data/' + payload.chartName + '.json'
				//payload.chartName // trend seller map rank hot stock
				filePath = path.join(__dirname, filePath)
				const ret = await fileUtils.getFileJsonData(filePath)
				//需要在服务端获取到数据的基础之上，增加一个data的字段
				//data所对应的值，就是某个json文件的内容
				payload.data = ret
				client.send(JSON.stringify(payload))


			} else{
				//原封不动的将所有接收到的数据转发给每一个处于连接状态的客户端
				//wss.clients  所有客户端的连接
				wss.clients.forEach(client =>{
					client.send(msg)
				})
			}
			//有由服务端发送数据到客服端(前端)
			//client.send('hello socket from backend')
		})
	})

}
